From 5e830da9358ef2efadf3ed49af7bbc18a659d951 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C3=98yvind=20Kol=C3=A5s?= Date: Thu, 15 Feb 2007 16:37:41 +0000 Subject: [PATCH] simplified logic of code to speed it up. * extensions/gegl-fixups.c: (conv_rgbAF_rgb8): simplified logic of code to speed it up. svn path=/trunk/; revision=217 --- ChangeLog | 5 +++++ extensions/gegl-fixups.c | 29 +++++++++++------------------ 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/ChangeLog b/ChangeLog index ee5aa21..508693d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-02-15 Øyvind Kolås + + * extensions/gegl-fixups.c: (conv_rgbAF_rgb8): simplified logic + of code to speed it up. + 2007-02-15 Øyvind Kolås * babl/base/model-rgb.c: (premultiplied_to_non_premultiplied), diff --git a/extensions/gegl-fixups.c b/extensions/gegl-fixups.c index 3b60ba2..91afb9c 100644 --- a/extensions/gegl-fixups.c +++ b/extensions/gegl-fixups.c @@ -415,26 +415,19 @@ conv_rgbAF_rgb8 (unsigned char *srcc, long n=samples; while (n--) { - int i; float alpha = src[3]; - if (alpha < 0.0001) - alpha = 0.0001; - for (i=0;i<3;i++) + if (alpha < 0.00001) { - float ca=src[i]; - float c; - int ret; - c=ca/alpha; - if (alpha==0.0) - ret=0; - else - ret = table_F_8g[gggl_float_to_index16 (c)]; - if (ret<=0) - dst[i]=0; - else if (ret>255) - dst[i]=255; - else - dst[i] = ret; + dst[0]=0; + dst[1]=0; + dst[2]=0; + } + else + { + float alpha_recip = 1.0/alpha; + dst[0] = table_F_8g[gggl_float_to_index16 (src[0]*alpha_recip)]; + dst[1] = table_F_8g[gggl_float_to_index16 (src[1]*alpha_recip)]; + dst[2] = table_F_8g[gggl_float_to_index16 (src[2]*alpha_recip)]; } src += 4; dst += 3; -- 2.30.2